diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
index ddc3663..1f59e91 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -25,7 +25,6 @@
 
 # echi
 obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o
-obj-$(CONFIG_USB_EHCI_ARMADA100) += ehci-armada100.o utmi-armada100.o
 obj-$(CONFIG_USB_EHCI_ATMEL) += ehci-atmel.o
 obj-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o
 obj-$(CONFIG_USB_EHCI_FARADAY) += ehci-faraday.o
diff --git a/drivers/usb/host/ehci-armada100.c b/drivers/usb/host/ehci-armada100.c
deleted file mode 100644
index 2ce9f27..0000000
--- a/drivers/usb/host/ehci-armada100.c
+++ /dev/null
@@ -1,48 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2012
- * eInfochips Ltd. <www.einfochips.com>
- * Written-by: Ajay Bhargav <contact@8051projects.net>
- *
- * This driver is based on Kirkwood echi driver
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- */
-
-#include <common.h>
-#include <log.h>
-#include <asm/io.h>
-#include <usb.h>
-#include "ehci.h"
-#include <asm/arch/cpu.h>
-#include <asm/arch/armada100.h>
-#include <asm/arch/utmi-armada100.h>
-
-/*
- * EHCI host controller init
- */
-int ehci_hcd_init(int index, enum usb_init_type init,
-		struct ehci_hccr **hccr, struct ehci_hcor **hcor)
-{
-	if (utmi_init() < 0)
-		return -1;
-
-	*hccr = (struct ehci_hccr *)(ARMD1_USB_HOST_BASE + 0x100);
-	*hcor = (struct ehci_hcor *)((uint32_t) *hccr
-			+ HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
-
-	debug("armada100-ehci: init hccr %x and hcor %x hc_length %d\n",
-		(uint32_t)*hccr, (uint32_t)*hcor,
-		(uint32_t)HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
-
-	return 0;
-}
-
-/*
- * EHCI host controller stop
- */
-int ehci_hcd_stop(int index)
-{
-	return 0;
-}
diff --git a/drivers/usb/host/utmi-armada100.c b/drivers/usb/host/utmi-armada100.c
deleted file mode 100644
index 5d66e58..0000000
--- a/drivers/usb/host/utmi-armada100.c
+++ /dev/null
@@ -1,80 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2012
- * eInfochips Ltd. <www.einfochips.com>
- * Written-by: Ajay Bhargav <contact@8051projects.net>
- *
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <usb.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/armada100.h>
-#include <asm/arch/utmi-armada100.h>
-#include <linux/delay.h>
-
-static int utmi_phy_init(void)
-{
-	struct armd1usb_phy_reg *phy_regs =
-		(struct armd1usb_phy_reg *)UTMI_PHY_BASE;
-	int timeout;
-
-	setbits_le32(&phy_regs->utmi_ctrl, INPKT_DELAY_SOF | PLL_PWR_UP);
-	udelay(1000);
-	setbits_le32(&phy_regs->utmi_ctrl, PHY_PWR_UP);
-
-	clrbits_le32(&phy_regs->utmi_pll, PLL_FBDIV_MASK | PLL_REFDIV_MASK);
-	setbits_le32(&phy_regs->utmi_pll, N_DIVIDER << PLL_FBDIV | M_DIVIDER);
-
-	setbits_le32(&phy_regs->utmi_tx, PHSEL_VAL << CK60_PHSEL);
-
-	/* Calibrate pll */
-	timeout = 10000;
-	while (--timeout && ((readl(&phy_regs->utmi_pll) & PLL_READY) == 0))
-		;
-	if (!timeout)
-		return -1;
-
-	udelay(200);
-	setbits_le32(&phy_regs->utmi_pll, VCOCAL_START);
-	udelay(400);
-	clrbits_le32(&phy_regs->utmi_pll, VCOCAL_START);
-
-	udelay(200);
-	setbits_le32(&phy_regs->utmi_tx, RCAL_START);
-	udelay(400);
-	clrbits_le32(&phy_regs->utmi_tx, RCAL_START);
-
-	timeout = 10000;
-	while (--timeout && ((readl(&phy_regs->utmi_pll) & PLL_READY) == 0))
-		;
-	if (!timeout)
-		return -1;
-
-	return 0;
-}
-
-/*
- * Initialize USB host controller's UTMI Physical interface
- */
-int utmi_init(void)
-{
-	struct armd1mpmu_registers *mpmu_regs =
-		(struct armd1mpmu_registers *)ARMD1_MPMU_BASE;
-
-	struct armd1apmu_registers *apmu_regs =
-		(struct armd1apmu_registers *)ARMD1_APMU_BASE;
-
-	/* Turn on 26Mhz ref clock for UTMI PLL */
-	setbits_le32(&mpmu_regs->acgr, APB2_26M_EN | AP_26M);
-
-	/* USB Clock reset */
-	writel(USB_SPH_AXICLK_EN, &apmu_regs->usbcrc);
-	writel(USB_SPH_AXICLK_EN | USB_SPH_AXI_RST, &apmu_regs->usbcrc);
-
-	/* Initialize UTMI transceiver */
-	return utmi_phy_init();
-}
diff --git a/include/netdev.h b/include/netdev.h
index 2b4e474..2a7f40e 100644
--- a/include/netdev.h
+++ b/include/netdev.h
@@ -71,7 +71,6 @@
 int smc91111_initialize(u8 dev_num, phys_addr_t base_addr);
 int smc911x_initialize(u8 dev_num, phys_addr_t base_addr);
 int uli526x_initialize(struct bd_info *bis);
-int armada100_fec_register(unsigned long base_addr);
 
 /* Boards with PCI network controllers can call this from their board_eth_init()
  * function to initialize whatever's on board.
